package com.heima_juc.chapter2_线程;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * @author linjy on 2023/5/17
 */
@Slf4j(topic = "c.创建和运行线程")
public class 创建和运行线程 {

    @Test
    public void test3() throws ExecutionException, InterruptedException {

            // 1. 使用 FutureTask 传入 Callable 接口方式创建
            FutureTask<Integer> future = new FutureTask<Integer>(() -> {
                log.debug("running...");
                Thread.sleep(2000); // 休眠
                return 100;
            });
            // 2. 传入 future, 因为 FutureTask 这个类是实现了 RunnableFuture 接口，RunnableFuture 继承了 Runnable 接口
            Thread t1 = new Thread(future, "t1");
            t1.start();
            // 3. 获取返回结果时
            // 当主线程获取 t1 线程的返回值时, 需要等 2 秒，此时主线程进入阻塞状态
            log.debug("{}",  future.get());


    }
}
